import { MICRO_SERVICE_ADMIN } from '~/constants/service-constant.ts'
import type { UserReq, UserResp } from '~/api/setting/model/user.ts'
import type { Page, Query } from '~/api/base/base-model.ts'

enum Api {
  QueryUserPage = '/webservice/user/queryUserPage',
  VerifyUsername = '/webservice/user/verifyUsername',
  CreateUser = '/webservice/user/createUser',
  ModifyUser = '/webservice/user/modifyUser',
  RemoveUserById = '/webservice/user/removeUserById',
  ModifyUserPwd = '/webservice/user/modifyUserPwd',
}

/**
 * 获取用户分页列表
 * @param params 用户实体
 */
export function queryUserPageApi(params?: Query<UserReq>) {
  return usePost<Page<UserResp>, Query<UserReq>>(MICRO_SERVICE_ADMIN + Api.QueryUserPage, params)
}

/**
 * 验证用户名是否可用
 * @param params 用户实体
 */
export function verifyUsernameApi(params?: UserReq) {
  return usePost<UserResp, UserReq>(MICRO_SERVICE_ADMIN + Api.VerifyUsername, params)
}

/**
 * 创建用户
 * @param params 用户实体
 */
export function createUserApi(params?: UserReq) {
  return usePost<boolean>(MICRO_SERVICE_ADMIN + Api.CreateUser, params)
}

/**
 * 修改用户
 * @param params 用户实体
 */
export function modifyUserApi(params?: UserReq) {
  return usePost<boolean, UserReq>(MICRO_SERVICE_ADMIN + Api.ModifyUser, params)
}

/**
 * 删除用户
 * @param params 用户实体，使用其中ID
 */
export function removeUserByIdApi(params?: UserReq) {
  return useGet<boolean>(MICRO_SERVICE_ADMIN + Api.RemoveUserById, params)
}

/**
 * 修改用户名密码
 * @param params 用户实体，使用其中ID
 */
export function modifyUserPwdApi(params?: UserReq) {
  return usePost<UserResp, UserReq>(MICRO_SERVICE_ADMIN + Api.ModifyUserPwd, params)
}
